home *** CD-ROM | disk | FTP | other *** search
- /************************************************************
-
- Created: Sunday, January 6, 1991 at 10:00 PM
- SCSI.h
- C Interface to the Macintosh Libraries
-
-
- Copyright Apple Computer, Inc. 1986-1990
- All rights reserved
-
- ************************************************************/
-
-
- #ifndef __SCSI__
- #define __SCSI__
-
- #ifndef __TYPES__
- #include <Types.h>
- #endif
-
-
- enum {
-
- scInc = 1,
- scNoInc = 2,
- scAdd = 3,
- scMove = 4,
- scLoop = 5,
- scNop = 6,
- scStop = 7,
- scComp = 8,
- scCommErr = 2, /*communications error, operation timeout*/
- scArbNBErr = 3, /*arbitration timeout waiting for not BSY*/
- scBadParmsErr = 4, /*bad parameter or TIB opcode*/
- scPhaseErr = 5, /*SCSI bus not in correct phase for attempted operation*/
- scCompareErr = 6, /*data compare error*/
- scMgrBusyErr = 7, /*SCSI Manager busy */
- scSequenceErr = 8, /*attempted operation is out of sequence*/
- scBusTOErr = 9, /*CPU bus timeout*/
- scComplPhaseErr = 10, /*SCSI bus wasn't in Status phase*/
- sbSIGWord = 0x4552,
- pMapSIG = 0x504D
- };
-
- struct Block0 {
- unsigned short sbSig; /*unique value for SCSI block 0*/
- unsigned short sbBlkSize; /*block size of device*/
- unsigned long sbBlkCount; /*number of blocks on device*/
- unsigned short sbDevType; /*device type*/
- unsigned short sbDevId; /*device id*/
- unsigned long sbData; /*not used*/
- unsigned short sbDrvrCount; /*driver descriptor count*/
- unsigned long ddBlock; /*1st driver's starting block*/
- unsigned short ddSize; /*size of 1st driver (512-byte blks)*/
- unsigned short ddType; /*system type (1 for Mac+)*/
- unsigned short ddPad[243]; /*ARRAY[0..242] OF INTEGER; not used*/
- };
-
- typedef struct Block0 Block0;
-
- struct Partition {
- unsigned short pmSig; /*unique value for map entry blk*/
- unsigned short pmSigPad; /*currently unused*/
- unsigned long pmMapBlkCnt; /*# of blks in partition map*/
- unsigned long pmPyPartStart; /*physical start blk of partition*/
- unsigned long pmPartBlkCnt; /*# of blks in this partition*/
- unsigned char pmPartName[32]; /*ASCII partition name*/
- unsigned char pmParType[32]; /*ASCII partition type*/
- unsigned long pmLgDataStart; /*log. # of partition's 1st data blk*/
- unsigned long pmDataCnt; /*# of blks in partition's data area*/
- unsigned long pmPartStatus; /*bit field for partition status*/
- unsigned long pmLgBootStart; /*log. blk of partition's boot code*/
- unsigned long pmBootSize; /*number of bytes in boot code*/
- unsigned long pmBootAddr; /*memory load address of boot code*/
- unsigned long pmBootAddr2; /*currently unused*/
- unsigned long pmBootEntry; /*entry point of boot code*/
- unsigned long pmBootEntry2; /*currently unused*/
- unsigned long pmBootCksum; /*checksum of boot code*/
- unsigned char pmProcessor[16]; /*ASCII for the processor type*/
- unsigned short pmPad[188]; /*512 bytes long currently unused*/
- };
-
- typedef struct Partition Partition;
-
- struct SCSIInstr {
- unsigned short scOpcode;
- unsigned long scParam1;
- unsigned long scParam2;
- };
-
- typedef struct SCSIInstr SCSIInstr;
-
-
- #ifdef __cplusplus
- extern "C" {
- #endif
- pascal OSErr SCSIReset(void)
- = {0x4267,0xA815};
- pascal OSErr SCSIGet(void)
- = {0x3F3C,0x0001,0xA815};
- pascal OSErr SCSISelect(short targetID)
- = {0x3F3C,0x0002,0xA815};
- pascal OSErr SCSICmd(Ptr buffer,short count)
- = {0x3F3C,0x0003,0xA815};
- pascal OSErr SCSIRead(Ptr tibPtr)
- = {0x3F3C,0x0005,0xA815};
- pascal OSErr SCSIRBlind(Ptr tibPtr)
- = {0x3F3C,0x0008,0xA815};
- pascal OSErr SCSIWrite(Ptr tibPtr)
- = {0x3F3C,0x0006,0xA815};
- pascal OSErr SCSIWBlind(Ptr tibPtr)
- = {0x3F3C,0x0009,0xA815};
- pascal OSErr SCSIComplete(short *stat,short *message,unsigned long wait)
- = {0x3F3C,0x0004,0xA815};
- pascal short SCSIStat(void)
- = {0x3F3C,0x000A,0xA815};
- pascal OSErr SCSISelAtn(short targetID)
- = {0x3F3C,0x000B,0xA815};
- pascal OSErr SCSIMsgIn(short *message)
- = {0x3F3C,0x000C,0xA815};
- pascal OSErr SCSIMsgOut(short message)
- = {0x3F3C,0x000D,0xA815};
- #ifdef __cplusplus
- }
- #endif
-
- #endif
-